package Ep03_HashTable._0454;

import java.util.HashMap;
import java.util.Map;

/**
 * @author Jimmy Zhan WORKSTATION
 * @date 2023/3/15 12:01
 * 说明： 力扣 0454 四数相加（求有多少个四元组）：HashMap解法
 */

public class Mine {
    public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
        Map<Integer, Integer> hashMap = new HashMap<>();
        int res = 0;
        // 计算前两个数组的和，送入HashMap映射。
        for (int i = 0; i < nums1.length; i++) {
            for (int j = 0; j < nums2.length; j++) {
                // 如果在HashMap中找到了，就把其value+1
                if (hashMap.containsKey(nums1[i] + nums2[j])){
                    int temp = hashMap.get(nums1[i] + nums2[j]);
                    hashMap.put(nums1[i] + nums2[j], ++temp);
                } else {
                    hashMap.put(nums1[i] + nums2[j], 1);
                }
            }
        }

        for (int i = 0; i < nums3.length; i++) {
            for (int j = 0; j < nums4.length; j++) {
                int sum = nums3[i] + nums4[j];
                if (hashMap.containsKey(0-sum)){
                    res += hashMap.get(0-sum);
                }
            }
        }
        return res;
    }
}
